/*
 * @Author: 橘子
 * @Date: 2022-11-20 15:33:44
 * @Project_description: 表单校验
 * @Description: 代码是我抄的，不会也是真的
 */

let validator = {}

// 校验身份证
validator.idCard = (rule, value, callback) => {
  if (!value) {
    callback()
  }
  let reg = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
  if (!reg.test(value)) {
    return callback(new Error('身份证不正确'))
  }
  callback()
}

// 校验手机号
validator.phone = (rule, value, callback) => {
  if (!value) {
    callback()
  }
  let reg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/
  if (!reg.test(value)) {
    return callback(new Error('手机号不正确'))
  }
  callback()
}

// 校验银行卡
validator.bankCard = (rule, value, callback) => {
  if (!value) {
    callback()
  }
  let reg = /^[1-9]\d{9,29}$/
  if (!reg.test(value)) {
    return callback(new Error('银行卡不正确'))
  }
  callback()
}
// 校验输入为汉字或者标点符号
validator.chinese = (rule, value, callback) => {
  if (!value) {
    callback()
  }
  let reg =
    /[\u4e00-\u9fa5|\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/
  if (reg.test(value)) {
    return callback(new Error('不能输入汉字或标点符号'))
  }
  callback()
}
// 权限值
validator.power = (rule, value, callback) => {
  if (!value) {
    callback()
  }

  if (value < 0 || value > 100) {
    return callback(new Error('不能大于100小于0'))
  }
  callback()
}

/**
 * @description 校验银行卡号
 * @Date 2023-07-28 10:41:11
 * @author 橘子
 * @return {void} 无返回值
 * @param rule
 * @param value
 * @param callback
 */
validator.isBankCode=(rule, value, callback)=>{
  if (!value) {
    callback()
  }
  let reg = /^[0-9]{16,19}$/
  if (!reg.test(value)) {
    return callback(new Error('银行卡号不正确'))
  }
  callback()
}

/**
 * @description 校验统一社会信用码
 * @Date 2023-07-28 10:43:29
 * @author 橘子
 * @return {void} 无返回值
 * @param rule
 * @param value
 * @param callback
 */
validator.socialCreditCode=(rule, value, callback)=>{
  if (!value) {
    callback()
  }
  let reg= /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
  if (!reg.test(value)) {
    return callback(new Error('统一社会信用码不正确'))
  }
  callback()
}


//普通类型校验
/**
 * @desc: 校验数据是否为空
 * @param {any} data
 * @return {Boolean}
 * @Author: 橘子
 */
validator.isEmpty = (data) => {
  if (data === undefined || data === null || data === '') return true
  if (typeof data === 'boolean') return false
  if (typeof data === 'number') return !data
  if (data instanceof Error) return data.message === ''
  switch (Object.prototype.toString.call(data)) {
    case '[object String]':
    case '[object Array]':
      return !data.length
    case '[object File]':
    case '[object Map]':
    case '[object Set]':
      return !data.size
    case '[object Object]':
      return !Object.keys(data).length
    default:
      return false
  }
}

export default validator
